package com.zoweunion.mechanic.service.base;


import java.util.List;
import java.util.Map;

import com.zoweunion.mechanic.entity.ThingsIdCarRecordBean;
import com.zoweunion.mechanic.model.User;
import com.zoweunion.mechanic.model.app.LockCar;
import com.zoweunion.mechanic.util.MyException;

public interface LockCarService{

    /**
     * 获取被锁车列表
     * @param reqMap
     * @return
     */
    Map<String, Object> getLockVehicleList(User currentUser, Map<String, Object> reqMap);

    /**
     * 获取申请解锁列表
     * @param currentUser
     * @param reqMap
     * @return
     */
    List<Map<String, Object>> getApplicationUnlockList(User currentUser, Map<String, Object> reqMap);

    /**
     * 锁车操作
     * @param currentUser
     * @param lockCar
     */
    Map<String, Object> getLockCar(User currentUser, LockCar lockCar) throws MyException;
    /**
     * 锁车操作
     * @param currentUser
     * @param lockCar
     */
    void lockCar(User currentUser, LockCar lockCar) throws MyException;

    /**
     * 解锁操作
     * @param currentUser
     * @param lockCar
     */
    void unlockCar(User currentUser, LockCar lockCar);


    /**
     * 取消锁车操作
     * @param currentUser
     * @param lockCar
     */
    void cancelLockCar(User currentUser, LockCar lockCar);

    /**
     * 增加申请锁车
     * @param reqMap
     * @return
     */
    int insertAppleLock(Map<String, Object> reqMap);

    /**
     * 更改监控状态(MonitorState)的值
     * @param reqMap
     * @return
     */
    int changeMonitorState(Map<String, Object> reqMap);

    /**
     * 获取短信发送总数
     * @param mobilePhone
     * @return
     */
    Map<String, Object> getSmsSendTotalByPhone(String mobilePhone);

    /**
     * 更新短信发送总数
     * @param mobilePhone
     * @return
     */
    int updateSendTotalByPhone(String mobilePhone);

    /**
     * 初始发送短信记录数量
     * @param mobilePhone
     * @return
     */
    int initSendRecordNumber(String mobilePhone);

    void thingsIdCarOperation(Map<String, Object> reqMap);

    /**
     * 锁车记录查询
     *
     * @return
     */
    List<Map<String, Object>> thingsIdCarRecord(Map<String, Object> reqMap);

    /**
     * 周期锁车命令获取
     *
     * @return
     */
    List<Map<String, Object>> getCycleLockThingsIdList(Map<String, Object> reqMap);

    /**
     * 更新周期锁车的信息的执行状态
     * @param reqMap
     * @return
     */
    int updateCycleLockThingsStatus(Map<String, Object> reqMap);

    /**
     * 更新周期锁车的车辆设备的锁车状态
     * @param reqMap
     * @return
     */
    int updateCarStatusForCycleLock(Map<String, Object> reqMap);

    /**
     * 更新周期锁车的信息的执行状态 - 用于APP解锁页面
     * @param reqMap
     * @return
     */
    int updateCycleLockThingsStatusForUnlock(Map<String, Object> reqMap);

    Map<String, Object> thingsIdCarRecordNew(Map<String, Object> reqMap);

    void bluetoothUnLock(Map<String, Object> reqMap);

    List<ThingsIdCarRecordBean> exportThingsIdCarRecord(Map<String, Object> reqMap);
}
